package class_1_4;

public class Test {
    public static void main(String[] args) {
        Animal animal=new Cat("动物",20);
//        Dog dog=new Dog("66",3);
//        Cat cat=new Cat("小野",2);
        //向上转型
        Animal dog=new Dog("66",3);
 //       Animal cat=new Cat("小野",2);
        if(animal instanceof Cat){
            Cat cat=(Cat)animal;
            cat.yell();
        }
//        animal.test();
//        dog.test();  //静态方法不能重写  Animal's test    Animal's test
//        animal.eat("食物");
//        dog.eat("狗粮");
//        cat.eat("老鼠");
//        func(animal,"食物");
//        func(dog,"狗粮");
//        func(cat,"老鼠");
    }
    //调用func方法可以发现，只要对象是animal的子类都可以传入func方法（向上转型）
    //如果没有向上转型，Animal有多少个子类，func方法就需要重载多少次  子类一定是父类的类型
    public static void func(Animal animal,String food){
        animal.eat(food);
    }
    public static Animal test(){
        return new Dog("狗狗",0);
    }
}
